export function 向上取整(num, 目标整数) {
    if (目标整数 == 0) {
        return num
    }
    return Math.ceil(num / 目标整数) * 目标整数
}

function 阶乘(n) {
    if (n === 0 || n === 1) {
        return 1
    }
    return n * 阶乘(n - 1)
}

export function 生成单双数(要单 = true) {
    let arr = []
    let start = 要单 ? 1 : 2
    let step = 2
    let end = 49
    for (let i = start; i <= end; i += step) {
        let numStr = i.toString().padStart(2, "0")
        arr.push(numStr)
    }
    return arr
}
export function 生成数字字符串(开始, 结束) {
    let arr = []
    for (let i = 开始; i <= 结束; i++) {
        let numStr = i.toString().padStart(2, "0")
        arr.push(numStr)
    }
    return arr
}

export function 计算组合数(总数, 挑数) {
    // console.log('总数: ', 总数);
    // console.log('挑数: ', 挑数);
    if (!挑数 || !总数 || 总数 < 挑数) {
        return 0
    }
    const res = 阶乘(总数) / (阶乘(挑数) * 阶乘(总数 - 挑数))
    return res
}

export function 列出组合组(arr, 挑数) {
    const res = 递归组合(arr, 挑数)
    return res
}

function 递归组合(arr, 挑数) {
    if (挑数 === 0) {
        return [[]]
    }

    const res = []
    for (let i = 0; i < arr.length; i++) {
        const rest = arr.slice(i + 1)
        const 组合结果组 = 递归组合(rest, 挑数 - 1)
        for (const 组合结果 of 组合结果组) {
            res.push([arr[i], ...组合结果])
        }
    }
    return res
}

export function 数值圆整(num, 位数) {
    // console.log('num: ', num);
    let res
    if (!位数 || 位数 == 0) {
        res = Math.round(num)
        // console.log(`res 👉`, res)
        return res
    }
    let 次方数 = 10 ** 位数
    // let 次方数 = Math.pow(10, 位数);
    res = Math.round(num * 次方数) / 次方数
    // console.log("数值圆整 res: ", res)
    return res
}
// export function 分转元(req) {
// 	// let res = (req / 100).toFixed(1)
// 	let res = (req / 100)
// 	return res;
// }

export function 元转分(req, 位数) {
    // 将以元为单位的值转换为以分为单位的值
    if (!req) return 0
    let res = parseFloat(req)
    res = res * 100
    res = 数值圆整(res, 位数)
    return res
}

export function 分转元(req) {
    // 将以元为单位的值转换为以分为单位的值
    if (!req) return 0
    req = Math.round(parseFloat(req))
    return req / 100
}

export function 现人民币_分转元(req) {
    // console.log(`格式化 value 👉`, value)
    req = 分转元(req)
    return `￥ ${req}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
}

export function 现人民币(value) {
    // console.log(`格式化 value 👉`, value)
    return `￥ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
}

export function 实人民币(value) {
    // console.log(`输入处理 value 👉`, value)
    return value.replace(/\￥\s?|(,*)/g, "")
}
